#pragma once
#ifndef __RENDERDEVICE_H__
#define __RENDERDEVICE_H__

#include "Utility.h"

#include "../util/D3DCommon.h"

namespace WindGE
{
	struct RenderDeviceDesc
	{
		D3D_DRIVER_TYPE		dirverType;
		unsigned int		deviceFlags;

		RenderDeviceDesc()
			: dirverType(D3D_DRIVER_TYPE_HARDWARE)
			, deviceFlags(0)
		{
		}
	};

	class WIND_CORE_API RenderDevice
	{
	public:
		RenderDevice();
		~RenderDevice();

		bool init(RenderDeviceDesc deviceParam);

		inline ID3D11Device*		device()			const { return device_;				}
		inline ID3D11DeviceContext* device_context()	const { return immediate_context_;	}

	private:
		ID3D11Device*		 device_;
		ID3D11DeviceContext* immediate_context_;
	};

}//end namespace WindGE

#endif	//__RENDERDEVICE_H__
